// 通用常量类
// import { Switch } from 'element-ui'
/**
 * pim的menuCode，用于用户中心上识别系统的code
 */
export const SYSTEM_CODE = 'pim'

/**
 * 创建时的路由id识别
 */
export const CREATE_ACTION = 'create'

/**
 * 所有默认分页数量设置
 */
export const PAGE_CONFIG = {
  sizes: [10, 25, 50, 100],
  nowSize: 10
}

/**
 * API类型
 */
export const API_TYPE = {
  // pim基础服务，门诊，药房药库
  pim: 1,
  // pim 住院
  inp: 2,
  // 用户中心
  user: 3,
  // 鉴权中心
  auth: 4,
  // 公共卫生
  phs: 5,
  // oss系统
  oss: 6
}

/**
 * 设置当前页面标题
 * @param {String} title 标题
 */
export const SET_TITLE = function (title) {
  title = title || '智赢-基层健康管理平台'
  window.document.title = title
}

/**
 * el-col规格配置，存放各个尺寸下生成的col的样式前缀，以及一行默认的col列数
 * xs: <1000；s: >1000；m: >1054；l: >1470；x: >1920
 */
export const EL_COL_CONFIG = [
  {
    symbol: 'xs',
    class: 'el-col-c-xs-',
    col: 1
  }, {
    symbol: 's',
    class: 'el-col-c-s-',
    col: 1
  }, {
    symbol: 'm',
    class: 'el-col-c-m-',
    col: 1
  }, {
    symbol: 'l',
    class: 'el-col-c-l-',
    col: 1
  }, {
    symbol: 'x',
    class: 'el-col-xl-',
    col: 1
  }]

/**
 * el-col中列与栅格的对应关系
 * @param {Number} colNumber 每行列数
 */
export const EL_COL_GRID = function (colNumber) {
  switch (colNumber) {
    case 1:
      return 24
    case 2:
      return 12
    case 3:
      return 8
    case 4:
      return 6
    // 5列跟6列配置相同
    case 5:
      return 4
    case 6:
      return 4
    default:
      return 24
  }
}
/**
 * 深拷贝对象，可以正确序列化日期
 * @param {*} obj
 */
export const DEEP_CLONE = function (obj) {
  let objClone = Array.isArray(obj) ? [] : {}
  if (obj && typeof obj === 'object') {
    for (let key in obj) {
      if (obj.hasOwnProperty(key)) {
        // 判断ojb子元素是否为对象，如果是，递归复制
        if (obj[key] && typeof obj[key] === 'object') {
          // 深拷贝日期类型
          if (obj[key] instanceof Date) {
            objClone[key] = new Date(obj[key].valueOf())
            // console.log('deepClone', objClone[key])
          } else {
            objClone[key] = DEEP_CLONE(obj[key])
          }
        } else {
          // 如果不是，简单复制
          objClone[key] = obj[key]
        }
      }
    }
  }
  return objClone
}
